package 剑指offer;

public class p21调整数组顺序使奇数位于偶数前面 {
    public int[] exchange1(int[] nums) {
        int left=0;
        int right=nums.length-1;

        while (left<right) {
            //当两个指针相遇，就是数组调整结束
            if (nums[left] % 2!=0) {
                left++;
            }else {
                //当left指向偶数时，从right的指向中找奇数
                if (nums[right] % 2!=0) {
                    //找到奇数
                    int tmp=nums[right];
                    nums[right]=nums[left];
                    nums[left]=tmp;
                }else {
                    right--;
                }
            }
        }
        return nums;
    }

    public int[] exchange(int[] nums) {
        //使用 位运算中的 与运算判断奇偶
        int left=0;
        int right=nums.length-1;

        while (left<right) {
            while (left<right && (nums[left]&1)==1) left++;
            while (left<right && (nums[right]&1)==0) right--;

            //left遇到偶数， right遇到奇数
            int tmp=nums[left];
            nums[left]=nums[right];
            nums[right]=tmp;
        }
        return nums;
    }
}
